'use strict'; //严格模式

const express = require('express');
const path = require('path');
const xtpl = require('xtpl');
const moment=require('moment');


// 引入数据库
const db = require(path.join(__dirname,"../configs/database.js"));

const base=require(path.join(__dirname,"./baseController.js"));

module.exports.classList = function(req,res){

    //当前页  req.query包含URL的查询参数（在URL的？后的参数）
    const page = parseInt(req.query.page || '1');

    //每页显示多少条
    const limit = parseInt(req.query.limit || '12');

    //偏移量
    const start = (page-1)*limit;

    //总数
    db.table('class').count("*").then(function(count){
        //总页数
        const totalPage = count % limit == 0 ? count/limit : parseInt(count/limit)+1;

        //封装一个数组
        const totalPageArray = [];

        //组装页码数
        for(var i=1;i<=totalPage;i++)
        {
            totalPageArray.push(i);
        }

        //获取数据
        db.table('class').order("class_id DESC").limit(start,limit).select().then(function(data){
            // 解析的模板文件路径
            xtpl.renderFile(
                path.join(__dirname,"../views/admin/class_list.html"),
                {
                    array:data,
                    totalPageArray:totalPageArray,
                    page:page,
                    totalPage:totalPage
                },
                function(err,content){
                    if(err)
                    {
                        return console.log(err);
                    }

                    res.setHeader('Content-Type','text/html;charset=utf-8');
                    res.end(content);
                }
            );

        });

    });

};





//来班级添加的界面

module.exports.classAdd=function(req,res){

  // 查询所有教师 
   db.table("teach").select().then(function(data){
     xtpl.renderFile(
       path.join(__dirname,"../views/admin/class_add.html"),
       {
        array:data
       },
       function(err,content){    
        res.setHeader("Content-Type","text/html;charset=utf-8");
        res.end(content);
       }

           
        );
        
   });
};

// 添加提交的数据
module.exports.classAddData = function(req,res){

  // db.table("teach").select().then(function(data){
  //    xtpl.renderFile(
  //      path.join(__dirname,"../views/admin/class_add.html"),
  //      {
  //       array:data
  //      },
  //      function(err,content){    
  //       res.setHeader("Content-Type","text/html;charset=utf-8");
  //       res.end(content);
  //      }

           
  //       );
        
  //  });
   
    var where = `class_name = '${req.body.class_name}'`;

    //先查询该班级是否存在
    db.table("class").where(where).find().then(function(data){
        //将对象转化为字符串
        if(JSON.stringify(data) != "{}"){
            res.setHeader("Content-Type","text/html;charset=utf-8");
            res.end("<script>alert('该班级已经存在，请重新添加');location.href='/class/class_add';</script>");
            return false;
        }else{

            //封装数据部分
            var data = {
                "class_name":req.body.class_name,
                "teach_id":req.body.teach_id,
                "class_time":(Date.parse(moment(req.body.class_time))/1000)
            };
            //插入数据库
            db.table('class').add(data).then(function(insertId){
                // 跳转到哪个页面
                res.redirect('/class/class_list');
                return false;

            }).catch(function(err){
                if(err)
                {
                    return console.log(err);
                }
            });
        }

    });


};


// 班级编辑页面

module.exports.classEdit=function(req,res){


  var class_id=req.params.class_id||0;
  var where=`class_id=${class_id}`;
  db.table('class').where(where).find().then(function(data){
     db.table('teach').select().then(function(datas){    
      if(JSON.stringify(data)=="{}"){

         base.showMsg(res,"班级不存在",'class/class_list');
         return false;
      }else{
       data.class_time=moment(data.class_time*1000).format("YYYY-MM-DD");
        xtpl.renderFile(
              path.join(__dirname,"../views/admin/class_edit.html"),
              {
                classInfo:data,
                array:datas
              },
              function(err,content){
                res.setHeader("Content-Type","text/html;charset=utf-8");
                res.end(content);
              }
          );
      }

     });


  });

}




// 修改表单数据提交


module.exports.classEditData=function(req,res){
  var class_id=req.params.class_id||0;
  var where=`class_id=${class_id}`;
  db.table('class').where(where).find().then(function(data){
     if(JSON.stringify(data)=="{}"){
          base.showMsg(res,'班级不存在','/class/class_list');
          return false;
     }else{

         var check=`class_name='${req.body.class_name}' AND class_id !=${class_id}`;

         db.table('class').where(check).find().then(function(data){

           if(JSON.stringify(data) != "{}"){
             base.showMsg(res,'班级已经存在');
             return false;

           }else{

            // 封装数据
              var data={
                 'class_name':req.body.class_name,
                 'teach_id':req.body.teach_id,
                 'class_time':(Date.parse( moment(req.body.class_time) )/1000)
              };
             
               // 更新数据
               
              db.table('class').where(`class_id=${class_id}`).update(data).then(function(affectRows){
                res.redirect('/class/class_list');
                return false;

              }).catch(function(err){
                if(err){
                   base.showMsg(res,'更新失败');
                   return false;
                }
              })

           }

         });

     }

  });


};

// 删除班级

module.exports.classDelete=function(req,res){

   var class_id=req.params.class_id||0;
   var where=`class_id=${class_id}`;
   // 先把学生删除  再删除班级
   
   db.table('student').where(where).delete().then(function(studentRows){

      console.log(studentRows);

        db.table('class').where(where).delete().then(function(classRows){

          base.showMsg(res,'删除班级成功','/class/class_list');
          return false;
        }).catch(function(err){
            base.showMsg(res,'删除失败','/class/class_list');
            console.log(err);
            return false;

        });

   }).catch(function(err){
        if(err){
           base.showMsg(res,'删除失败','/class/class_list');
           console.log(err);
           return false;
        }
       
   });
    



}
 